<html>
<?php
    require_once("menu.php");
	require_once('controllers/squadra.php');
	require_once('controllers/formazione.php');
	require_once('controllers/calendari.php');
	require_once('controllers/user.php');
	global $TITOLARE, $RISERVA_1, $RISERVA_2, $RISERVA_3, $RISERVA_4;
	
	$formazione = null;
	$msg_err_formazione="";
	$teamId = -1;
	$giornata = Calendario::getNextADay();
	
	if(User::getCurrentUser()==null){
		header("Location: home.php");
		die();
	}else{
		$user = User::getCurrentUser();
		$squadre = SquadraDesc::getSquadreUtente($user->getId());
		if(isset($_REQUEST['team']) && filter_var($_REQUEST['team'], FILTER_VALIDATE_INT) 
			&& (ownToUser($teamId, $squadre) || $user->getRuolo() == User::$SA)){
			$teamId = $_REQUEST['team'];
		}else{
			$teamId = $squadre[0]->getId();
		}
		//se l'utente è un super amministratore può decidere di cambiare
		//un'altra formazione.
		if($user->getRuolo()>=User::$SA && isset($_GET['t'])){
			$teamId = $_GET['t'];
		}
	
	}
		
	
	/* Controlla se la richiesta è un postback, in questo caso salva la formazione inviata */
	if(isset($_POST['salva'])){
		try{
			doPost();
		}catch(Exception $ex){
			$alert_err = str_replace("'", "\'", $ex->getMessage());
			echo "
			<script type='text/javascript' language='javascript'>
				alert('$alert_err');
			</script>";
		}
		//phpinfo(32);
	}
	
	function ownToUser($teamId, $squadre){
		foreach($squadre as $s){
			if($s->getId() == $teamId) return true;
		}
		return false;
	}

	function panca($player){
		
		if($player==null){
			echo "<td class='panchina' style='text-align:center'> - </td>";
		}else{
			$n = $player->getNome(); 
			echo "<td class='panchina'>$n</td>";
		}
		
	}
	
	function doPost(){
		global $formazione, $msg_err_formazione;
	/* Esegue il postback salvando la formazione inviata */
		$giornataA = $_POST['giornata'];
		$team = $_POST['choosedTeam'];
		if(!filter_var($giornataA, FILTER_VALIDATE_INT) && ($giornataA < 1 || $giornataA > 38)) throw new Exception("Attenzione non è stata selezionata nessuna giornata valida.");
		$formazione = caricaFormazione($team, $giornataA);
		$formazione->setGiornata($giornataA); //nel caso in cui sia la prima volta che salva la formazione per questa giornata
		$id = "";
		//adesso scorre tutte le chiavi del post per cercare le modifiche ai valori delle formazioni
		foreach($_POST as $name => $posizione){
			if(strpos($name, "pos") !== false) {
				$id = substr($name, 4);
				$player = $formazione->getGiocatore($id);
				$player->setFormazione($posizione);
			}
		}
		//controlla se il modulo inserito è valido
		if($formazione->getNumPortieri() + $formazione->getNumDifensori() + $formazione->getNumCentrocampisti() + 
		$formazione->getNumAttaccanti() != 11){
			$msg_err_formazione = "Impossibile salvare questa formazione: modulo (". 
			$formazione->getNumDifensori() . "-" . $formazione->getNumCentrocampisti() . "-" . $formazione->getNumAttaccanti()
			. ") errato";
		}else{
			try{
				$formazione->salva(); //salva le modifiche alla formazione
			}catch(Exception $ex){
				$msg_err_formazione = "Impossibile salvare la formazione:" . $ex;
			}
		}
		if($msg_err_formazione!=""){
			$alert_err = str_replace("'", "\'", $msg_err_formazione);
			echo "
			<script type='text/javascript' language='javascript'>
				alert('$alert_err');
			</script>";
		}
	}
	
?>
	<head>
		<title>Fantacalcio - Modifica formazione</title>
		<link rel="stylesheet" href="fantacalcio.css" type="text/css" >
		<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
		<style>
			td.headerFormazione{
				font-weight:bold;
				font-size:15px;
				background-color:rgb(194,209,240);
				padding-left:30px;
			}
			
			.riga {
				font-size: 12px;
				color:black;
				padding-left:3px;
			}
			
			td.ruolo{
				width:30px;
				text-align:center;
			}
			
			td.calciatore{
				width:120px;
			}
			
			td.squadra{
				width:120px;
			}
			
			td.formazione{
				width:120px;
			}
			
			.riga_0{
				background-color:rgb(240,240,240);
			}
			
			.riga_1{
				background-color:rgb(221,221,221);
			}
			
			select.selPos0{
				background-color:green;
				color:white;
			}
			
			select.selPos1{
				background-color:blue;
				color:white;
			}
			
			select.selPos2{
				background-color:skyblue;
				color:white;
			}
			
			select.selPos3{ color:black	}
			select.selPos4{ color:black	}
			
		</style>
		
		<script type="text/javascript" language="javascript">
			
			function changePos(_select, def_class){
			/*chiamata quando si cambia la posizione di un giocatore*/
				pos = _select.options[_select.selectedIndex].value;
				_select.className = def_class + " selPos" + pos;
				/*if(pos=="TITOLARE"){
					
				}else if(pos=="I RISERVA"){
					_select.className = def_class + " Riserva1";
				}else if(pos=="II RISERVA"){
					_select.className = def_class + " Riserva2";
				}else {
					_select.className = def_class;
				}*/
			}
			
		</script>
		
	</head>
	<body>
		
		<table class="pageTable" cellpadding='0' cellspacing='0'>
			<tr>
				<td>
					<?php echo printMasterMenu('Modifica formazione'); ?>
					
				</td>
				
			</tr>
			<tr>
				<td class='contentPage' style="">
					<form action='modifica_formazione.php' method="post">
					<table cellspacing='1' style="">
						<tr>
							<td colspan="2" class="pageTitle">Modifica la tua formazione</td>
						</tr>
						<tr>
							<td colspan='2' style="vertical-align:top;padding-left:20px;width:30%">
								<?php 

								if(isset($_REQUEST['giornata'])){
									$giornata = $_REQUEST['giornata'];
								}
								echo "<input type='hidden' name='choosedTeam' value='$teamId' />
								";
								if($msg_err_formazione == "")
									$formazione = caricaFormazione($teamId, $giornata); //carica la prima giornata disponibile
								/* Disegna il menu delle giornate di serie A */
								echo "
								<span style='color:#0A246A'>Giornata per la quale inviare la formazione:</span> 
								<select name='giornata' style='border-style:solid border-width:1px; background-color:rgb(240,240,240)'>";
								for($i = $formazione->getGiornata(); $i < 39; $i++){
									$selected = $i==$giornata ? "selected='selected'":'';
									echo "<option value='$i' $selected>$i</option>";

								}
								echo "</div>";
								//carica la formazione anche se è già stata caricata da una chiamata post
								//per mantere il corretto ordinamento (a meno in caso di errore)
								?>
							</tr>
							<tr>
								<td style='width:200px;vertical-align:top;'>
									<!-- Visualizza i nomi delle squadre appartenenti all'utente connesso -->
									<div style='overflow-y:scroll;background-color:transparent;height:660px;width:100%;border: solid 1px gray;'>
									<span style='color:#0A246A;font-weight:bold;text-align:center'>Squadre:</span>
									<table style='width:100%' cellpadding='0' cellspacing='0'>
										<?php 
											for($i=0;$i<count($squadre); $i++){
												$nome = $squadre[$i]->getNome();
												$id = $squadre[$i]->getId();
												$class_a = "";
												if($teamId==$id){
													$class_a = "lega_sel";
												}
												$alt=1;
												echo "
												<tr>
													<td class='rowLega_0'><a class='lega $class_a' href='?team=$id'>$nome</a></td>
												</tr>
												";
											}
										?>
										<tr>
											<td class='lastRowLega'>&nbsp;</td>
										</tr>
									</table>
									</div>
								</td>
								<td style='width:80%;padding-left:20px;'>
									<br />
									<br />
									<div style='font-size:15px;color:rgb(4,128,128);'>
										<?php echo $formazione->getSquadra() . ' - ' . $formazione->getAllenatore() . '<br />';
										echo "Modulo: " . $formazione->getNumDifensori($TITOLARE) . "-" .
										$formazione->getNumCentrocampisti($TITOLARE) . "-" .
										$formazione->getNumAttaccanti($TITOLARE);
										if($formazione->getUltimaModifica() != null && $formazione->getUltimaModifica()!=''){
											echo '<br />Ultima modifica: ' . $formazione->getUltimaModifica();
										}
										?>
									</div>
									<br />
									<div style='color:red;font-size:14px;'><?php echo $msg_err_formazione; ?></div>
									<!-- Disegna il campo, dentro al quale andranno scritti i giocatori -->
									<table border='0' cellpadding='0' cellspacing='1'>
										<?php
										
										//Riga dei portieri
										echo "
										<tr>
											<td colspan='5' class='headerFormazione'>
												Portieri
											</td>
										</tr>
										" . getRigaPortieri($formazione) .
										"
										<tr>
											<td colspan='5' class='headerFormazione'>
												Difensori
											</td>
										</tr>" .
										getRigaCalciatori($formazione, "Difensore").
										"
										<tr>
											<td colspan='5' class='headerFormazione'>
												Centrocampisti
											</td>
										</tr>" .
										getRigaCalciatori($formazione, "Centrocampista").
										"
										<tr>
											<td colspan='5' class='headerFormazione'>
												Attaccanti
											</td>
										</tr>" .
										getRigaCalciatori($formazione, "Attaccante");
										"";
										
										function getRigaPortieri($formazione){
										/* Restituisce il codice html di una riga con tutti i portieri*/
											$html = '';
											for($i=0;$i<3;$i++){ //i portieri sono già ordinati per posizione
												$class_alt = "riga riga_" . ($i%2);
												$p=$formazione->getPortiere($i);
												$ruolo = $p->getRuolo();
												$nome = $p->getNome();
												$squadra = $p->getSquadra();
												$pos = $p->getFormazione();
												$mediaVoto = $p->getMediaVoto();
												$html = $html . "
												<tr>
													<td class='ruolo $class_alt'>$ruolo</td>
													<td class='calciatore $class_alt'>$nome</td>
													<td class='squadra $class_alt'>$squadra</td>
													<td class='ruolo $class_alt'>$mediaVoto</td>
													<td class='formazione $class_alt'>
													" . getSelectPosizioni($pos, $p->getId(), $class_alt) . "
													</td>
												</tr>";
											}
											return $html;
										}
										
										function getRigaCalciatori($formazioni, $ruolo){
											$html = '';
											$ruolo_plurale = substr($ruolo, 0, strlen($ruolo) - 1) . "i";
											$alternative=0;
											for($pos=0;$pos < Formazione::getNumPosizioni(); $pos++){
												$count = call_user_func_array(array($formazioni, "getNum" . $ruolo_plurale . "InPos"), array($pos));
												for($i=0;$i<$count;$i++){
													$class_alt = "riga riga_" . ($alternative++%2);
													$p= call_user_func_array(array($formazioni,"get$ruolo" . "Pos"), array($pos, $i));// $formazione->getPortiere($i);
													$ruolo_giocatore = $p->getRuolo();
													$nome = $p->getNome();
													$squadra = $p->getSquadra();
													$mediaVoto = $p->getMediaVoto();
													//$pos = $p->getFormazione();
													$html = $html . "
													<tr>
														<td class='ruolo $class_alt'>$ruolo_giocatore</td>
														<td class='calciatore $class_alt'>$nome</td>
														<td class='squadra $class_alt'>$squadra</td>
														<td class='ruolo $class_alt'>$mediaVoto</td>
														<td class='formazione $class_alt'>
														" . getSelectPosizioni($pos, $p->getId(), $class_alt) . "
														</td>
													</tr>";
												}
											}
											return $html;
										}
										
										function getSelectPosizioni($pos, $player_id, $classes_style){
										/* Restituisce il codidce HTML della select con le posizioni nella formazione
										 * mettendo come selezionata quella uguale a $pos */
											$def_class = $classes_style;
											$html = "";
											for($i=0;$i<Formazione::getNumPosizioni();$i++){
												if($pos==$i){
													$selected ="selected='selected'";
													$classes_style = $classes_style . " selPos$i";
												}else{
													$selected = "";
												}
												$html = $html . "\n<option value='$i' $selected>" . Formazione::getPosizioneFormazione($i) . "</option>";
											}
											$html = "<select class='$classes_style' style='width:100%;font-weight:bold;' name='pos_$player_id' onchange='changePos(this, \"$def_class\");'>" .  
											$html . "\n</select>";
											return $html;
										}

										?>
										
									</table>
								</td>
								
							</tr>
							<tr>
								<td  style='width:20%'>&nbsp;</td>
								<td style='padding-top:20px;text-align:left;width:80%;padding-left:20px;'>
									<input type='submit' name='salva' value='Salva formazione' />
									<!--<button type='submit' name='salva' value='Salva formazione'>Salva</button> -->
									<br />
									<br />
								</td>
								
							</tr>
					</table>
					</form>
				</td>
			</tr>
			<tr>
				<td>
					<?php printFooter("Modifica formazione"); ?>
				</td>
				
			</tr>
		</table>
		
	</body>
</html>
